package com.sync;

/**
 * 锁重入
 * 学习点01
 * 当一个方法中, 一个具有类锁的方法, 或块内, 访问另一个具有锁的方法, 或块的时候, 可以获取到锁
 */

class Service {
    synchronized public void service01() {
        System.out.println("service01");
        service02();
    }

    synchronized public void service02() {
        System.out.println("service02");
        service03();
    }

    synchronized public void service03() {
        System.out.println("service03");
    }
}

class ThreadH extends Thread {
    @Override
    public void run() {
        super.run();
        Service service = new Service();
        service.service01();
    }
}

/**
 * @author bysun
 */
public class Demo05 {
    public static void main(String[] args) {
        ThreadH threadH = new ThreadH();
        threadH.start();
    }
}
